use core::registry::PackageRegistry;
use core::{Source, SourceId, PackageSet, Package, Target};
-use core::{Profile, TargetKind};
+use core::{Profile, TargetKind, Profiles};
use core::resolver::Method;
use ops::{self, BuildOutput, ExecEngine};
use util::config::{ConfigValue, Config};
};
let resolved_with_overrides =
- try!(ops::resolve_with_previous(&mut registry, root_package, method,
- Some(&resolve), None));
+ try!(ops::resolve_with_previous(&mut registry, root_package,
+ method, Some(&resolve), None));
- let packages = try!(ops::get_resolved_packages(&resolved_with_overrides, &mut registry));
+ let packages = try!(ops::get_resolved_packages(&resolved_with_overrides,
+ &mut registry));
(packages, resolved_with_overrides, registry.move_sources())
};
let mut general_targets = Vec::new();
let mut package_targets = Vec::new();
+ let profiles = root_package.manifest().profiles();
match *target_rustc_args {
Some(args) => {
if to_builds.len() == 1 {
- let targets = try!(generate_targets(to_builds[0], mode, filter, release));
+ let targets = try!(generate_targets(to_builds[0], profiles,
+ mode, filter, release));
if targets.len() == 1 {
let (target, profile) = targets[0];
let mut profile = profile.clone();
}
None => {
for &to_build in to_builds.iter() {
- let targets = try!(generate_targets(to_build, mode, filter, release));
+ let targets = try!(generate_targets(to_build, profiles, mode,
+ filter, release));
package_targets.push((to_build, targets));
}
}
/// Given the configuration for a build, this function will generate all
/// target/profile combinations needed to be built.
fn generate_targets<'a>(pkg: &'a Package,
+ profiles: &'a Profiles,
mode: CompileMode,
filter: &CompileFilter,
release: bool)
-> CargoResult<Vec<(&'a Target, &'a Profile)>> {
- let profiles = pkg.manifest().profiles();
let build = if release {&profiles.release} else {&profiles.dev};
let test = if release {&profiles.bench} else {&profiles.test};
let profile = match mode {
{running} `rustc src[..]main.rs [..]`
", compiling = COMPILING, running = RUNNING)));
});
+
+test!(selective_test_wonky_profile {
+ let p = project("foo")
+ .file("Cargo.toml", r#"
+ [package]
+ name = "foo"
+ version = "0.0.1"
+ authors = []
+
+ [profile.release]
+ opt-level = 2
+
+ [dependencies]
+ a = { path = "a" }
+ "#)
+ .file("src/lib.rs", "")
+ .file("a/Cargo.toml", r#"
+ [package]
+ name = "a"
+ version = "0.0.1"
+ authors = []
+ "#)
+ .file("a/src/lib.rs", "");
+ p.build();
+
+ assert_that(p.cargo("test").arg("-v").arg("--no-run").arg("--release")
+ .arg("-p").arg("foo").arg("-p").arg("a"),
+ execs().with_status(0).with_stdout(&format!("\
+{compiling} a v0.0.1 ([..])
+{running} `rustc a[..]src[..]lib.rs [..]`
+{running} `rustc a[..]src[..]lib.rs [..]`
+{compiling} foo v0.0.1 ([..])
+{running} `rustc src[..]lib.rs [..]`
+{running} `rustc src[..]lib.rs [..]`
+", compiling = COMPILING, running = RUNNING)));
+});